/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.claro.administracionSolicitudes.beans;

import co.com.claro.administracionSolicitudes.ejb.EJBAdminSolicitudesLocal;
import co.com.claro.administracionSolicitudes.dao.exceptions.ClaroException;
import co.com.claro.administracionSolicitudes.entity.Usuario;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Mike
 */
@ManagedBean
@ViewScoped
public class CambioPasswordBean {

    @EJB
    private EJBAdminSolicitudesLocal localAdminSol;
    
    @ManagedProperty(value="#{usuarioSessionBean}")
    private UsuarioSessionBean sesionBean;
    
    private String nuevoPassword;
    private String confirmarPassword;
    private String mensaje;
    
    /**
     * Creates a new instance of CambioPasswordBean
     */
    public CambioPasswordBean() {
    }

    /**
     * Método que cambia el password en la base de datos
     */
    public void cambiarPassword(){
        if(!isValidoPassword()){
            return;
        }
        
        Usuario usuario = sesionBean.getUsuario();
        
        usuario.setPassword(nuevoPassword);
        try {
            localAdminSol.cambiarPassword(usuario);
        } catch (ClaroException ex) {
            if(ex.getMessage().contains("seguridad")){
                incluirMensaje(ex.getMessage());
                return;
            }
            Logger.getLogger(CambioPasswordBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        incluirMensaje(ResourceBundle.getBundle("mensajes").getString("cambiosGuardadosOk"));
        borrarCampos();
    }
    
    /**
     * Método que hace todas las validaciones del password.
     * Si alguna validación no pasa, incluirá un mensaje para mostrarle al usuario
     */
    private boolean isValidoPassword(){
        if(!nuevoPassword.equals(confirmarPassword)){
            String error = ResourceBundle.getBundle("errores").getString("errorPasswordDiferente");
            incluirMensaje(error);
            return false;
        }
        return true;
    }
    
    /**
     * Método que toma un mensaje enviado y lo pasa al contexto para que sea mostrado
     * en la interfaz gráfica del usuario
     * @param String, mensaje con el error que se desea mostrar.
     */
    private void incluirMensaje(String error) {
        mensaje = error;
//        FacesContext.getCurrentInstance().addMessage(null, 
//            new FacesMessage(FacesMessage.SEVERITY_INFO, error, null));
    }
    
    /**
     * Método que borra los campos cuando se han hecho modificaciones
     */
    private void borrarCampos(){
        nuevoPassword = null;
        confirmarPassword = null;
    }
    
    //+++++++++++++++++++++++ GETTERS Y SETTERS +++++++++++++++++++++++++++++++++++
    
    public String getNuevoPassword() {
        return nuevoPassword;
    }

    public void setNuevoPassword(String nuevoPassword) {
        this.nuevoPassword = nuevoPassword;
    }

    public String getConfirmarPassword() {
        return confirmarPassword;
    }

    public void setConfirmarPassword(String confirmarPassword) {
        this.confirmarPassword = confirmarPassword;
    }

    public UsuarioSessionBean getSesionBean() {
        return sesionBean;
    }

    public void setSesionBean(UsuarioSessionBean sesionBean) {
        this.sesionBean = sesionBean;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }
    
}
